Peripheral device with haptic diminishment prevention component

ABSTRACT

A system is provided that modifies a haptic effect experienced at a user input element, where the user input element is positioned within the housing so that a first contact with the housing defines a first maximum range of a first movement of the user input element. The system receives a position of a user input element of a peripheral device. The system further sends a haptic effect definition to the haptic output device in response to the received position of the user input element. The system further causes the haptic output device to output a force to the user input element of the peripheral device in response to the haptic effect definition. The system further causes the haptic diminishment prevention to define a first diminishment range of the first movement of the user input element, where the first diminishment range is less than the first maximum range and prevents the first contact with the housing.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/538,976, filed on Nov. 12, 2014, the specification of which is herebyincorporated by reference.

FIELD

One embodiment is directed generally to a device, and more particularly,to a device that produces haptic effects.

BACKGROUND

Video games and video game systems have become extremely popular. Videogame devices or controllers typically use visual and auditory cues toprovide feedback to a user. In some interface devices, kinestheticfeedback (such as active and resistive force feedback) and/or tactilefeedback (such as vibration, texture, and heat) is also provided to theuser, more generally known collectively as “haptic feedback” or “hapticeffects.” Haptic feedback can provide cues that enhance and simplify auser's interaction with a video game controller, or other electronicdevice. Specifically, vibration effects, or vibrotactile haptic effects,may be useful in providing cues to users of video game controllers orother electronic devices to alert the user to specific events, orprovide realistic feedback to create greater sensory immersion within asimulated or virtual environment.

Other devices, such as medical devices, automotive controls, remotecontrols, and other similar devices where a user interacts with a userinput element to cause an action, also benefit from haptic feedback orhaptic effects. For example, and not by way of limitation, user inputelements on medical devices may be operated by a user outside the bodyof a patient at a proximal portion of a medical device to cause anaction within the patient's body at a distal end of the medical device.Haptic feedback or haptic effects may be employed to alert the user tospecific events, or provide realistic feedback to the user regarding aninteraction of the medical device with the patient at the distal end ofthe medical device.

SUMMARY

One embodiment is a system that modifies a haptic effect experienced ata user input element, where the user input element is positioned withinthe housing so that a first contact with the housing defines a firstmaximum range of a first movement of the user input element. The systemreceives a position of the user input element of a peripheral device,the peripheral device including a housing, a user input element, ahaptic output device located within the housing and coupled to the userinput element, and a haptic diminishment prevention component. Thesystem further sends a haptic effect definition to the haptic outputdevice in response to the received position of the user input element.The system further causes the haptic output device to output a force tothe user input element of the peripheral device in response to thehaptic effect definition. The system further causes the hapticdiminishment prevention to define a first diminishment range of thefirst movement of the user input element, where the first diminishmentrange is less than the first maximum range and prevents the firstcontact with the housing.

BRIEF DESCRIPTION OF THE DRAWINGS

Further embodiments, details, advantages, and modifications will becomeapparent from the following detailed description of the preferredembodiments, which is to be taken in conjunction with the accompanyingdrawings.

FIG. 1 illustrates a block diagram of a system in accordance with oneembodiment of the invention.

FIG. 2 illustrates a controller, according to an embodiment of theinvention.

FIG. 3 illustrates another view of the controller of FIG. 2, accordingto an embodiment of the invention.

FIG. 4 illustrates a block diagram of a controller in conjunction with ahost computer and display, according to an embodiment of the invention.

FIG. 5 illustrates a block diagram of a trigger haptic effect softwarestack for a system, according to an embodiment of the invention.

FIG. 6 illustrates a controller that includes an outer spring thatcreates an open extended travel range for a trigger to move within whenthe trigger is in a maximum open position outside of the open extendedtravel range, according to an embodiment of the invention.

FIG. 7 illustrates a controller that includes an extended frame thatthat creates a closed extended travel range for a trigger to move withinwhen the trigger is in a maximum closed position outside of the closedextended travel range, according to an embodiment of the invention.

FIG. 8 illustrates a flow diagram of the functionality of a haptictrigger modification module, according to an embodiment of theinvention.

FIG. 9 illustrates a maximum open position that is outside an openextended travel range for a trigger, and a maximum closed position thatis outside a closed extended travel range for the trigger, according toan embodiment of the invention.

DETAILED DESCRIPTION

In one embodiment, a peripheral device, such as a controller or gamepad,can be provided that produces haptic feedback, such as a trigger hapticeffect, at a trigger, or other user input element, of the peripheraldevice. The peripheral device can include a housing, a trigger, a hapticoutput device, such as a motor or actuator, and one or more hapticdiminishment prevention components, such as springs or frames. Theperipheral device can receive haptic data, such as a haptic signal, froma processor. A haptic output device can output a force to a trigger inresponse to the received haptic data. A haptic diminishment preventioncomponent can be positioned such that a range is created within thehousing for the trigger to move in response to the force output by thehaptic output device, when the trigger is in either a maximum openposition outside of the range or a maximum closed position outside ofthe range. This range can be an open extended travel range when thetrigger is in a maximum open position outside of the open extendedtravel range. This range can also be a closed extended travel range whenthe trigger is in a maximum closed position outside of the closedextended travel range. By creating the range, the haptic diminishmentprevention component can increase a magnitude of the haptic feedback(e.g., trigger haptic effect) when the trigger is in either a maximumopen position outside of the range or a maximum closed position outsideof the range. In other words, the haptic diminishment preventioncomponent can prevent the magnitude of the haptic feedback from beingdiminished when the trigger is in either a maximum open position outsideof the range or a maximum closed position outside of the range. Thehaptic diminishment prevention component can also be identified as ahaptic amplification component.

For example, when the haptic diminishment prevention component is aspring, the spring can be positioned to prevent the trigger fromgrounding against an outer portion of the housing. This creates an openextended travel range between the trigger and the outer portion of thehousing. Thus, when a force is applied to the trigger when the triggeris in a maximum open position outside of the open extended travel range,the trigger can move within the created open extended travel range. Asanother example, when the haptic diminishment prevention component is aframe, the frame can be positioned to prevent the trigger from groundingagainst an inner portion of the housing when an object pushes or pullsthe trigger by causing the object to ground against the frame ratherthan an outer portion of the housing. This creates a closed extendedtravel range between the trigger and the inner portion of the housing.Thus, when a force is applied to the trigger when the trigger is in amaximum closed position outside of the closed extended travel range, thetrigger can move within the created closed extended travel range.

In another embodiment, the peripheral device can include a housing, auser input element (e.g., analog or digital stick, button, etc.), ahaptic output device, such as a motor or actuator, and one or morehaptic diminishment prevention components, such as springs or frames.The peripheral device can receive haptic data, such as a haptic signal,from a processor. A haptic output device can output a force to the userinput element in response to the received haptic data. A hapticdiminishment prevention component can be positioned such that a range iscreated within the housing for the user input element to move inresponse to the force output by the haptic output device, when the userinput element is in either a maximum open position outside of the rangeor a maximum closed position outside of the range. By creating therange, the haptic diminishment prevention component can increase amagnitude of the haptic feedback (e.g., haptic effect) when the userinput element is in either a maximum open position outside of the rangeor a maximum closed position outside of the range. In other words, thehaptic diminishment prevention component can prevent the magnitude ofthe haptic feedback from being diminished when the user input element isin either a maximum open position outside of the range or a maximumclosed position outside of the range.

FIG. 1 illustrates a block diagram of a system 10 in accordance with oneembodiment of the invention. In one embodiment, system 10 is part of adevice (e.g., a personal computer or console, such as a video gameconsole), and system 10 provides a trigger haptic effect modificationfunctionality for the device. In another embodiment, system 10 isseparate from the device (e.g., personal computer or console), andremotely provides the aforementioned functionality for the device.Although shown as a single system, the functionality of system 10 can beimplemented as a distributed system. System 10 includes a bus 12 orother communication mechanism for communicating information, and aprocessor 22 operably coupled to bus 12 for processing information.Processor 22 may be any type of general or specific purpose processor.System 10 further includes a memory 14 for storing information andinstructions to be executed by processor 22. Memory 14 can be comprisedof any combination of random access memory (“RAM”), read only memory(“ROM”), static storage such as a magnetic or optical disk, or any othertype of computer-readable medium.

A computer-readable medium may be any available medium that can beaccessed by processor 22 and may include both a volatile and nonvolatilemedium, a removable and non-removable medium, a communication medium,and a storage medium. A communication medium may include computerreadable instructions, data structures, program modules or other data ina modulated data signal such as a carrier wave or other transportmechanism, and may include any other form of an information deliverymedium known in the art. A storage medium may include RAM, flash memory,ROM, erasable programmable read-only memory (“EPROM”), electricallyerasable programmable read-only memory (“EEPROM”), registers, hard disk,a removable disk, a compact disk read-only memory (“CD-ROM”), or anyother form of a storage medium known in the art.

In one embodiment, memory 14 stores software modules that providefunctionality when executed by processor 22. The modules include anoperating system 15 that provides operating system functionality forsystem 10, as well as the rest of an overall device in one embodiment.The modules further include a haptic trigger modification module 16 thatmodifies a haptic effect experienced at a trigger. In certainembodiments, haptic trigger modification module 16 can comprise aplurality of modules, where each module provides specific individualfunctionality for modifying a haptic effect experienced at a trigger.System 10 will typically include one or more additional applicationmodules 18 to include additional functionality, such as peripheralfirmware which can provide control functionality for a peripheraldevice, such as a controller 30.

System 10, in embodiments that transmit and/or receive data from remotesources, further includes a communication device 20, such as a networkinterface card, to provide mobile wireless network communication, suchas infrared, radio, Wi-Fi, or cellular network communication. In otherembodiments, communication device 20 provides a wired networkconnection, such as an Ethernet connection or a modem.

System 10 is operably connected to controller 30. Controller 30 is aperipheral device used to provide input to system 10. Controller 30 canbe operably connected to system 10 using either a wireless connection ora wired connection. Controller 30 can further include a local processorwhich can communicate with system 10 using either a wireless connectionor a wired connection. Alternatively, controller 30 may be configured tonot include a local processor, and all input signals and/or outputsignals associated with controller 30 can be handled and processeddirectly by processor 22 of system 10.

Controller 30 can further include one or more digital buttons, one ormore analog buttons, one or more bumpers, one or more directional pads,one or more analog or digital sticks, one or more driving wheels, and/orone or more user input elements that can be interacted with by a user,and that can provide input to system 10. Controller 30 can also includeone or more analog or digital trigger buttons (or “triggers”) that canfurther be interacted with by the user, and that can further provideinput to system 10. As is described below in greater detail, controller30 can further include a motor, or another type of actuator or hapticoutput device, configured to exert a bi-directional push/pull force onat least one trigger of controller 30.

Controller 30 can also include one or more actuators, or other types ofhaptic output devices. The local processor of controller 30, or,processor 22 in embodiments where controller 30 does not include a localprocessor, may transmit a haptic signal associated with a haptic effectto at least one actuator of controller 30. The actuator, in turn,outputs haptic effects such as vibrotactile haptic effects, kinesthetichaptic effects, or deformation haptic effects, in response to the hapticsignal. The haptic effects can be experienced at a user input element(e.g., a digital button, analog button, bumper, directional pad, analogor digital stick, driving wheel, or trigger) of controller 30.Alternatively, the haptic effects can be experienced at an outer surfaceof controller 30. The actuator includes an actuator drive circuit. Theactuator may be, for example, an electric motor, an electro-magneticactuator, a voice coil, a shape memory alloy, an electro-active polymer,a solenoid, an eccentric rotating mass motor (“ERM”), a linear resonantactuator (“LRA”), a piezoelectric actuator, a high bandwidth actuator,an electroactive polymer (“EAP”) actuator, an electrostatic frictiondisplay, or an ultrasonic vibration generator. An actuator is an exampleof a haptic output device, where a haptic output device is a deviceconfigured to output haptic effects, such as vibrotactile hapticeffects, electrostatic friction haptic effects, or deformation hapticeffects, in response to a drive signal. In alternate embodiments, theone or more actuators within controller 30 can be replaced by some othertype of haptic output device.

Controller 30 can further include one or more speakers. The localprocessor of controller 30, or, processor 22 in embodiments wherecontroller 30 does not include a local processor, may transmit an audiosignal to at least one speaker of controller 30, which in turn outputsaudio effects. The speaker may be, for example, a dynamic loudspeaker,an electrodynamic loudspeaker, a piezoelectric loudspeaker, amagnetostrictive loudspeaker, an electrostatic loudspeaker, a ribbon andplanar magnetic loudspeaker, a bending wave loudspeaker, a flat panelloudspeaker, a heil air motion transducer, a plasma arc speaker, and adigital loudspeaker.

Controller 30 can further include one or more sensors. A sensor can beconfigured to detect a form of energy, or other physical property, suchas, but not limited to, sound, movement, acceleration, bio signals,distance, flow, force/pressure/strain/bend, humidity, linear position,orientation/inclination, radio frequency, rotary position, rotaryvelocity, manipulation of a switch, temperature, vibration, or visiblelight intensity. The sensor can further be configured to convert thedetected energy, or other physical property, into an electrical signal,or any signal that represents virtual sensor information, and controller30 can send the converted signal to the local processor of controller30, or, processor 22 in embodiments where controller 30 does not includea local processor. The sensor can be any device, such as, but notlimited to, an accelerometer, an electrocardiogram, anelectroencephalogram, an electromyograph, an electrooculogram, anelectropalatograph, a galvanic skin response sensor, a capacitivesensor, a hall effect sensor, an infrared sensor, an ultrasonic sensor,a pressure sensor, a fiber optic sensor, a flexion sensor (or bendsensor), a force-sensitive resistor, a load cell, a LuSense CPS2 155, aminiature pressure transducer, a piezo sensor, a strain gage, ahygrometer, a linear position touch sensor, a linear potentiometer (orslider), a linear variable differential transformer, a compass, aninclinometer, a magnetic tag (or radio frequency identification tag), arotary encoder, a rotary potentiometer, a gyroscope, an on-off switch, atemperature sensor (such as a thermometer, thermocouple, resistancetemperature detector, thermistor, or temperature-transducing integratedcircuit), microphone, photometer, altimeter, bio monitor, camera, or alight-dependent resistor.

FIG. 2 illustrates a controller 100, according to an embodiment of theinvention. In one embodiment, controller 100 is identical to controller30 of FIG. 1. Further, FIG. 3 illustrates another view of controller100. Controller 100 may be generally used with a gaming system that maybe connected to a computer, mobile phone, television, or other similardevice. Components of controller 100 illustrated in FIGS. 2 and 3 (i.e.,housing 102, analog or digital stick 110, button 114, trigger 118, andrumble actuators 122 and 124) are further described below in greaterdetail in conjunction with FIG. 4.

FIG. 4 illustrates a block diagram of controller 100 used in a gamingsystem 101 that further includes a host computer 104 and a display 106.As shown in the block diagram of FIG. 4, controller 100 includes a localprocessor 108 which communicates with host computer 104 via a connection105. Connection 105 may be a wired connection, a wireless connection, orother types of connections known to those skilled in the art. Controller100 may be alternatively configured to not include local processor 108,whereby all input/output signals from controller 100 are handled andprocessed directly by host computer 104. Host computer 104 is operablycoupled to display screen 106. In an embodiment, host computer 104 is agaming device console and display screen 106 is a monitor which isoperably coupled to the gaming device console, as known in the art. Inanother embodiment, as known to those skilled in the art, host computer104 and display screen 106 may be combined into a single device.

A housing 102 of controller 100 is shaped to easily accommodate twohands gripping the device, either by a left-handed user or aright-handed user. Those skilled in the art would recognize thatcontroller 100 is merely an example embodiment of a controller ofsimilar shape and size to many “gamepads” currently available for videogame console systems, such as a Microsoft® Xbox One™ controller or aPlayStation® DualShock™ controller, and that controllers with otherconfigurations of user input elements, shapes, and sizes may be used,including but not limited to controllers such as a Wii™ remote or Wii™ UController, Sony® SixAxis™ controller or Sony® Wand controller, as wellas controllers shaped as real life objects (such as tennis rackets, golfclubs, baseball bats, and the like) and other shapes, or controllerswith a display or head-mounted display.

Controller 100 includes several user input elements, including an analogor digital stick 110, a button 114, and a trigger 118. As used herein,user input element refers to an interface device such as a trigger,button, analog or digital stick, or the like, which is manipulated bythe user to interact with host computer 104. As can be seen in FIGS. 2and 3, and as known to those skilled in the art, more than one of eachuser input element and additional user input elements may be included oncontroller 100. Accordingly, the present description of a trigger 118,for example, does not limit controller 100 to a single trigger. Further,the block diagram of FIG. 4 shows only one (1) of each of analog ordigital stick 110, button 114, and trigger 118. However, those skilledin the art would understand that multiple analog or digital sticks,buttons, and triggers, as well as other user input elements, may beused, as described above.

As can be seen in the block diagram of FIG. 4, controller 100 includes atargeted actuator or motor to directly drive each of the user inputelements thereof as well as one or more general or rumble actuators 122,124 operably coupled to housing 102 in a location where a hand of theuser is generally located. More particularly, analog or digital stick110 includes a targeted actuator or motor 112 operably coupled thereto,button 114 includes a targeted actuator or motor 116 operably coupledthereto, and trigger 118 includes a targeted actuator or motor 120operably coupled thereto. In addition to a plurality of targetedactuators, controller 100 includes a position sensor operably coupled toeach of the user input elements thereof. More particularly, analog ordigital stick 110 includes a position sensor 111 operably coupledthereto, button 114 includes a position sensor 115 operably coupledthereto, and trigger 118 includes a position sensor 119 operably coupledthereto. Local processor 108 is operably coupled to targeted actuators112, 116, 120 as well as position sensors 111, 115, 119 of analog ordigital stick 110, button 114, and trigger 118, respectively. Inresponse to signals received from position sensors 111, 115, 119, localprocessor 108 instructs targeted actuators 112, 116, 120 to providedirected or targeted kinesthetic effects directly to analog or digitalstick 110, button 114, and trigger 118, respectively. Such targetedkinesthetic effects are discernible or distinguishable from general orrumble haptic effects produced by general actuators 122, 124 along theentire body of the controller. The collective haptic effects provide theuser with a greater sense of immersion to the game as multiplemodalities are being simultaneously engaged, e.g., video, audio, andhaptics. Further details of a controller configured to produce hapticsis described in greater detail in application Ser. No. 14/258,644, filedApr. 22, 2014, entitled “GAMING DEVICE HAVING A HAPTIC-ENABLED TRIGGER,”herein incorporated by reference in its entirety.

FIG. 5 illustrates a block diagram of a trigger haptic effect softwarestack for a system, according to an embodiment of the invention. Thetrigger haptic effect software stack is implemented on a system, such assystem 10 of FIG. 1. In the illustrated embodiment, the system includesthe following components: device 500, peripheral firmware 510, andcontroller 520. Device 500 can be any type of computer device, such as apersonal computer, tablet, smartphone, or console (e.g., video gameconsole). Peripheral firmware 510 is firmware for one or more peripheraldevices (e.g., controllers) that can be operably connected to device500. Controller 520 is an example of a peripheral that is operablyconnected to device 500. Controller 520 can be a video game controller.In one embodiment, controller 520 can be identical to controller 30 ofFIG. 1, and controller 100 of FIGS. 2, 3, and 4.

Device 500 includes game input management code 501. Game inputmanagement code 501 includes a set of computer-readable instructionsthat manage input provided by controller 520 in the context of a gameapplication, or other type of application, executed within device 500.Device 500 further includes peripheral input application programminginterface (“API”) 502. Peripheral input API 502 includes a set ofcomputer-readable functions or routines that allow game input managementcode 501 to interact with peripheral firmware 510 in order to receiveand manage input provided by controller 520. Device 500 further includesrumble API 503. Rumble API includes a set of computer-readable functionsor routines that allow game input management code 501 to interact withperipheral firmware 510 in order to transmit rumble instructions to oneor more rumble motors, or rumble actuators, of controller 520 (e.g.,rumble motors L and R, as illustrated in FIG. 5). A rumble instructioncan cause a rumble motor, or rumble actuator, of controller 520 toproduce a general or rumble haptic effect.

Device 500 further includes trigger haptic effect API 504 (identified inFIG. 5 as “API”). Trigger haptic effect API 504 includes a set ofcomputer-readable functions or routines that are exposed to game inputmanagement code 501, and that allow game input management code 501 tointeract with peripheral firmware 510 in order to transmit hapticinstructions to controller 520, such as trigger instructions to one ormore triggers of controllers 520 (e.g., triggers L and R, as illustratedin FIG. 5). A haptic instruction can cause one or more targeted motors,or targeted actuators, of controller 520 to produce a haptic effect atone or more user input elements of controllers 520. A triggerinstruction is a specific type of haptic instruction that can cause oneor more targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) to produce a trigger hapticeffect at one or more triggers of controllers 520 (e.g., triggers L andR, as illustrated in FIG. 5). A trigger haptic effect is a specific typeof haptic effect that is experienced at a trigger of a controller, suchas controller 520. Trigger haptic effect API 504 can store one or moretrigger haptic effect definitions. A haptic effect definition is a datastructure that includes haptic data, such as a haptic signal, that ispre-defined and that can be stored within a storage, such as a hapticfile or haptic stream, and that can be sent to one or more rumblemotors, rumble actuators, targeted motors, or targeted actuators, toproduce a haptic effect at a component, or user input element, ofcontroller 520. The haptic data can include one or more attributes ofthe corresponding haptic effect, where the attributes can be stored asparameters. Example parameters of a haptic effect definition include anamplitude parameter, a frequency parameter, a waveform parameter, anenvelope parameter, a magnitude (or strength) parameter, and a durationparameter. A trigger haptic effect definition is a specific type ofhaptic effect definition that can be sent to one or more motors, oractuators, of controller 520 (e.g., motors L and R, as illustrated inFIG. 5) to produce a trigger haptic effect at one or more triggers ofcontrollers 520 (e.g., triggers L and R, as illustrated in FIG. 5).

According to the embodiment, trigger haptic effect API 504 can allowgame input management code 501 to interact with directplayback/crossover 505, trigger engine 506, and spatialization engine507, and can further manage direct playback/crossover 505, triggerengine 506, and spatialization engine 507 according to requests invokedby game input management code 501. Further, trigger haptic effect API504 can store data required for communication with peripheral firmware510, and required for generation of one or more trigger haptic effects.In an alternate embodiment, trigger haptic effect API 504 can residewithin peripheral firmware 510 rather than device 500.

Device 500 further includes direct playback/crossover 505. Directplayback/crossover 505 receives haptic data as input, produces hapticdata as output, and transmits haptic data to one or more targetedmotors, or targeted actuators, of controller 520 (e.g., motors L and R,as illustrated in FIG. 5). In certain embodiments, directplayback/crossover 505 can output the input haptic data directly,without modifying a format of the input haptic data. This results in an“as-is” playback of the input haptic data. In other embodiments, directplayback/crossover 505 can convert the haptic data that is input from afirst format to a second format, and can further output the convertedhaptic data. Depending on the type of playback, directplayback/crossover 505 can optionally use a programmable crossover toconvert the haptic data. By converting the haptic data, device 500 can“deconstruct” the haptic effect and playback the haptic effect atmultiple actuators faithfully. In one embodiment, the format of thehaptic data can be a Haptic Elementary Stream (“HES”) format. A HESformat is a file or data format for representing haptic data that can bestreamed to a device. The haptic data can be represented in a mannerthat is identical or similar to how uncompressed sound is represented,although the haptic data can be encrypted within the HES format. In analternate embodiment, direct playback/crossover 505 can reside withinperipheral firmware 510 rather than device 500.

Device 500 further includes trigger engine 506. Trigger engine 506 canreceive haptic data, such as a trigger haptic effect definition, and canmodify the haptic data based on data, such as trigger data (e.g.,trigger data 513 as illustrated in FIG. 5) received from controller 520.Trigger data is data that includes one or more parameters that indicatea position and/or range of one or more triggers of controller 520 (e.g.,triggers L and R as illustrated in FIG. 5). Trigger engine 506 canfurther transmit haptic instructions to controller 520. For example,trigger engine 506 can transmit trigger instructions to one or moretriggers of controller 520 (e.g., triggers L and R, as illustrated inFIG. 5). As previously described, a trigger instruction can cause one ormore targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) to produce a trigger hapticeffect at one or more triggers of controllers 520 (e.g., triggers L andR, as illustrated in FIG. 5). Thus, in one embodiment, by modifying thehaptic data of the trigger haptic effect definition, trigger engine 506can cause a specific trigger haptic effect to be experienced at atrigger based on a position and/or range of the trigger. In anotherembodiment, by modifying the haptic data of the trigger haptic effectdefinition, trigger engine 506 can scale a trigger haptic effect for oneor more targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) based on a position and/orrange of the trigger. Trigger engine 506 can further store one or morehaptic effect definitions, such as trigger haptic effect definitions. Inan alternate embodiment, trigger engine 506 can reside within peripheralfirmware 510 rather than device 500.

Device 500 further includes spatialization engine 507 (identified inFIG. 5 as “spatialisation engine”). Spatialization engine 507 canreceive haptic data, such as a trigger haptic effect definition, and canmodify the haptic data based on spatialization data. Spatialization datacan include data that indicates a desired direction and/or flow of ahaptic effect, such as a trigger haptic effect. In certain embodiments,spatialization engine 507 can receive spatialization data that includesa direction and/or flow from game input management code 501. Further,spatialization data can also include one or more positions of one ormore hands of a user located on controller 520. In certain embodiments,spatialization engine 507 can receive spatialization data that includesone or more hand positions from controller 520. Further, in certainembodiments, spatialization engine 507 can receive spatialization datathat includes a position of a user's character within a game applicationas communicated by game input management code 501.

According to the embodiment, spatialization engine 507 can modify thehaptic data so that a haptic effect, such as a trigger haptic effect, isscaled for one or more rumble motors, or rumble actuators, of controller520 (e.g., rumble motors L and R, as illustrated in FIG. 5), and thatthe haptic effect is also scaled for one or more targeted motors, ortargeted actuators, of controller 520 (e.g., motors L and R, asillustrated in FIG. 5). In other words, spatialization engine 507 canmodify the haptic data that is sent to each motor or actuator, and thus,modify the haptic effect that is experienced at each motor or actuator,in order to convey a sense of direction and flow of an overall hapticeffect. For example, in order to emphasize a haptic effect experiencedat a motor or actuator, spatialization engine 507 may scale one or moreportions of the haptic effect. For example, spatialization engine 507may scale haptic data that is sent to the motor or actuator that causesthe haptic effect to be experienced, causing the haptic effect to bemore pronounced (e.g., increased magnitude, duration, etc.).Additionally, spatialization engine 507 may scale haptic data that issent to other motors or actuators, causing other haptic effects that areexperienced at those motors or actuators to be less pronounced (e.g.,decreased magnitude, duration, etc.). In certain embodiments,spatialization engine 507 can modify the haptic data in real-time.Further, in certain embodiments, spatialization engine 507 can havenon-linear relationships between inputs and motor, or actuator, outputsin order to exaggerate an overall trigger haptic effect. In an alternateembodiment, spatialization engine 507 can reside within peripheralfirmware 510 rather than device 500.

Device 500 further includes encoder 508. Encoder 508 encodes haptic datareceived from direct playback/crossover 505, trigger engine 506, and/orspatialization engine 507 into a format. In one embodiment, the formatcan be an HES format. Encoder 508 further transmits the encoded hapticdata to peripheral firmware 510.

Peripheral firmware 510 includes decoder and crossover 511. Decoder andcrossover 511 receives the encoded haptic data from encoder 508 anddecodes the encoded haptic data. In certain embodiments, decoder andcrossover 511 computes a programmable crossover in order to decode theencoded haptic data. In some of these embodiments, decoder and crossover511 computes the programmable crossover in real-time. Peripheralfirmware 510 further includes trigger control 512. Trigger control 512is a low-level control API for one or more targeted motors, or targetedactuators, of controller 520 (e.g., motors L and R, as illustrated inFIG. 5). Trigger control 512 can receive a trigger instruction fromdevice 500, can convert the trigger instruction into a low-level triggerinstruction for a specified targeted motor, or targeted actuator, ofcontroller 520, and can transmit the low-level trigger instruction tothe specified targeted motor, or targeted actuator, of controller 520.The low-level trigger instruction can cause the specified targetedmotor, or targeted actuator, to produce a trigger haptic effect at aspecified trigger of controller 520.

Peripheral firmware 510 further includes trigger data 513. Trigger data513, as previously described, is data that includes one or moreparameters that indicate a position and/or range of one or more triggersof controller 520 (e.g., triggers L and R as illustrated in FIG. 5).Trigger data 513 can be received from controller 520 by peripheralfirmware 510. Peripheral firmware 510 can further store trigger data513, and can further transmit trigger data 513 to device 500. Peripheralfirmware 510 further includes other gamepad functions 514, which arefunctions of controller 520 that can be managed by peripheral firmware510. Such functions can include such functions as wired/wirelesscommunications, input reporting, protocol implementation, powermanagement, etc. Peripheral firmware 510 further includes rumble control515. Rumble control 515 is a low-level control API for one or morerumble motors, or rumble actuators, of controller 520 (e.g., rumblemotors L and R, as illustrated in FIG. 5). Rumble control 515 canreceive a rumble instruction from device 500, can convert the rumbleinstruction into a low-level rumble instruction for a specified rumblemotor, or rumble actuator, of controller 520, and can transmit thelow-level trigger instruction to the specified rumble motor, or rumbleactuator, of controller 520.

Controller 520 includes triggers L and R. Controller 520 furtherincludes gear boxes L and R and motors L and R. Motor L and gearbox Lare operably coupled to trigger L within controller 520. Likewise, motorR and gearbox R are operably coupled to trigger R within controller 520.When motor L receives a trigger instruction, motor L and gearbox Lcollectively cause a trigger haptic effect to be experienced at triggerL. Likewise, when motor R receives a trigger instruction, motor R andgearbox R collectively cause a trigger haptic effect to be experiencedat trigger R. According to the embodiment, peripheral firmware 510 sendstrigger instructions to motors L and R of controller 520 using driveelectronics 530. Controller 520 further includes potentiometers L and R.Potentiometer L can detect a position and/or range of trigger L, and canfurther send the detected position and/or range of trigger L toperipheral firmware 510 as trigger data. Likewise, potentiometer R candetect a position and/or range of trigger R, and can further send thedetected position and/or range of trigger R to peripheral firmware 510as trigger data. In one embodiment, potentiometers L and R can each bereplaced with another type of position sensor, such as a hall effectsensor. Controller 520 further includes rumble motors L and R. Whenrumble motor L receives a rumble instruction, rumble motor L causes ahaptic effect to be experienced along a left body of controller 520.Likewise, when rumble motor R receives a rumble instruction, rumblemotor R cause a haptic effect to be experienced along a right body ofcontroller 520. According to the embodiment, peripheral firmware 510sends rumble instructions to rumble motors L and R of controller 520using rumble drive electronics 530.

In an alternate embodiment, one or more targeted motors, or targetedactuators, can be operably coupled to one or more user input elements(such as one or more digital buttons, one or more analog buttons, one ormore bumpers, one or more directional pads, one or more analog ordigital sticks, one or more driving wheels) of controller 520. Accordingto the alternate embodiment, peripheral firmware 510 can sendsinstructions to the one or more targeted motors or targeted actuators,causing the one or more targeted motors or targeted actuators to producehaptic effects that are experienced at the one or more user inputelements of controller 520.

As previously described, a controller, gamepad, or other peripheraldevice, can include one or more general or rumble motors or actuators,and one or more targeted motors or actuators. Such a controller canproduce spatialization haptic effects, which are haptic effects wherelocalized haptic feedback can be experienced on the controller. Forexample, a user can perceive localized haptic effects that are played atone or more triggers of the controller while resting their fingers onthe one or more triggers. These localized haptic effects can be distinctfrom more general haptic effects that can be played within a housing ofthe controller, and that can be more generally perceived by the user'shands while holding the controller. In one example, within a gamingapplication, a user's in-game character may be hit with a “sorcerer'sspell.” In conjunction with the visual representation of the spelldisplayed within the gaming application, a localized haptic effect canfirst be experienced at a trigger by the user, and a more general hapticeffect can subsequently be experienced at the controller by the user.

A trigger can be housed within a housing of a controller, or other typeof peripheral device. The trigger can extend, possibly outside of thehousing, so that it makes contact with an outer rotational hard stop, orsome other outer portion of the housing. More specifically, the triggercan be extended, possibly by a spring, and can make contact with theouter rotational hard stop, or some other outer portion of the housing.When an object (e.g., a user's finger) moves (e.g., pulls or pushes) thetrigger, the trigger can rotate, or otherwise move, into the housinguntil it makes contact with an inner rotational hard stop, or some otherinner portion of the housing, while still being in contact with theobject. When a targeted motor or actuator, or some other type of hapticoutput device, applies a force to the trigger, the trigger can rotate,or otherwise move. This rotation, or other type of movement, can betowards an outer rotational hard stop or away from the outer rotationalhard stop.

Using a standard trigger design in a controller, however, can result ina diminished haptic feedback sensation when the trigger is either in amaximum open position or a maximum closed position. A maximum openposition of a trigger is a position of the trigger when little or noforce is applied to the trigger, such that the trigger has not begun torotate, or otherwise move, into the housing. A maximum open position canalso be identified as a “resting position.” In a maximum open position,the trigger can be grounded against an outer rotational hard stop, orsome other outer portion of the housing, of the controller. This canprovide the trigger with little to no space to rotate, or otherwisemove, in response to a force that is produced by a targeted motor oractuator and that is applied to the trigger.

A maximum closed position of a trigger is a position of the trigger whena force is applied to the trigger, such that the trigger has rotated, orotherwise moved, a maximum distance into the housing. Similar to amaximum open position, in a maximum closed position the trigger can begrounded against an inner rotational hard stop, or some other innerportion of the housing, of the controller. This can also provide thetrigger with little to no space to rotate, or otherwise move, inresponse to a force that is produced by a targeted motor or actuator andapplied to the trigger. This lack of ability to move in either themaximum open position or the maximum closed position can reduce amagnitude of, or otherwise dampen, a haptic feedback sensationexperienced at the trigger.

Thus, in one embodiment, a peripheral device can also include one ormore haptic diminishment prevention components, such as one or moresprings, one or more frames, or a combination of the two. A hapticdiminishment prevention component can increase a magnitude of a triggerhaptic effect experienced at a trigger when the trigger is in a maximumopen position outside of an open extended travel range created by thehaptic diminishment prevention component. This is further describedbelow in greater detail in conjunction with FIG. 6. Further, a hapticdiminishment prevention component can increase a magnitude of a triggerhaptic effect experienced at a trigger when the trigger is in a maximumclosed position outside of a closed extended travel range created by thehaptic diminishment prevention component. This is further describedbelow in greater detail in conjunction with FIG. 7. Thus, in accordancewith an embodiment, in addition to a maximum open position and a maximumclosed position, two new positions are further defined: a maximum openposition outside an open extended travel range; and a maximum closedposition outside a closed extended travel range. A maximum open positionoutside an open extended travel range is identical to a maximum openposition, except that the maximum open position outside the openextended travel range is positioned by a haptic diminishment preventioncomponent so that it is not positioned within an open extended travelrange. A maximum closed position outside a closed extended travel rangeis identical to a maximum closed position, except that the maximumclosed position outside the closed extended travel range is positionedby a haptic diminishment prevention component so that it is notpositioned within a closed extended travel range. A maximum openposition outside an open extended travel range and a maximum closedposition outside a closed extended travel range are further describedbelow in greater detail in conjunction with FIG. 9. In an alternateembodiment, the trigger can be replaced with another type of user inputelement (e.g., a button, bumper, directional pad, analog or digitalstick, driving wheel), and the trigger haptic effect can be replacedwith a more general haptic effect. In this alternate embodiment, thehaptic diminishment prevention component can increase a magnitude of thehaptic effect experienced at the user input element.

FIG. 6 illustrates a controller that includes an outer spring 600 thatcreates an open extended travel range 620 for a trigger 610 to movewithin when trigger 610 is in a maximum open position outside of openextended travel range 620, according to an embodiment of the invention.More specifically, FIG. 6 illustrates a controller that includes outerspring 600 that holds trigger 610 in a maximum open position outside ofopen extended travel range 620. When a force is applied to trigger 610,outer spring 600 can allow trigger 610 to rotate, or otherwise move, toopen extended travel range 620. FIG. 6 includes views 601 and 602. Inview 601, trigger 610 is in a maximum open position outside of openextended travel range 620, as trigger 610 can be pulled or pushed alongan axis that is perpendicular to the illustrated plane of FIG. 6. Inview 602, trigger 610 is in a maximum open position that is inside openextended travel range 620, where trigger 610 is further extended withinopen extended travel range 620, as trigger 610 can be pulled back in,but cannot be pushed out further along an axis that is perpendicular tothe illustrated plane of FIG. 6. In the illustrated embodiment, outerspring 600 is an example of a haptic diminishment prevention component,and is positioned between trigger 610 and an outer rotational hard stop,or an outer portion of a housing of the controller. A maximum openposition outside of an extended travel range can be important forspatialization as a user can be lightly resting their fingers ontriggers of a controller when receiving spatialization haptic effects.In order to increase a magnitude of a trigger haptic effect when atrigger (such as trigger 610) is in a maximum open position outside ofan open extended travel range (such as open extended travel range 620),the trigger can be offset with an outer spring (such as outer spring600) so that, when in the maximum open position outside of an openextended travel range, the trigger is able to move within the extendedtravel range in response to a force that is applied to the trigger.

View 601 is a view of the controller where outer spring 600 holdstrigger 610 in a position such that trigger 610 is not resting at, orotherwise making contact with, an outer rotational hard stop, or anouter portion of a housing of the controller, when trigger 610 is in amaximum open position outside of open extended travel range 620. Inother words, outer spring 600 creates open extended travel range 620,where open extended travel range 620 is a range that trigger 610 canrotate, or otherwise move, within, in response to a force that isproduced by a targeted motor or actuator and applied to trigger 610. Bycreating open extended travel range 620, outer spring 600 can preventtrigger 610 from grounding on the outer rotational hard stop, or theouter portion of the housing, when trigger 610 rotates, or otherwisemoves, in response to the force that is applied to trigger 610. This canincrease a magnitude of a trigger haptic effect (e.g., kinesthetichaptic effect) experienced at trigger 610. In the illustratedembodiment, outer spring 600 is a cantilever spring that includes leverarm 605, where lever arm 605 pushes against, or otherwise makes contactwith, trigger 610 to hold trigger 610 in the aforementioned position. Inan alternate embodiment, outer spring 600 can be a compression spring,bias spring, or some other type of spring, that pushes against, orotherwise makes contact with, trigger 610.

View 602 is a view of the controller where a targeted motor or actuatorapplies a force to trigger 610, and trigger 610 rotates, or otherwisemoves, in response to the force. As illustrated in view 602 of FIG. 6,trigger 610 rotates, or otherwise moves, into open extended travel range620, and occupies at least a portion of open extended travel range 620.In the illustrated embodiment, trigger 610 pushes against, or otherwisemakes contact with, lever arm 605. This moves lever arm 605 so thattrigger 610 can rotate, or otherwise move, into extended travel range620. In an alternate embodiment where outer spring 600 is a compressionspring, bias spring, or another type of spring, trigger 610 can pushagainst, or otherwise make contact with, outer spring 600, which canmove outer spring 600 so that trigger 610 can rotate, or otherwise move,into open extended travel range 620.

In an alternate embodiment, outer spring 600 can be replaced with aninner spring. The inner spring can be positioned between trigger 610 andan inner rotational hard stop, or an inner portion of a housing of thecontroller. Further, the inner spring can pull trigger 610 such thattrigger 610 is not resting at, or otherwise making contact with, anouter rotational hard stop, or an outer portion of a housing of thecontroller (i.e., such that extended travel range 620 is created). Inthis alternate embodiment, a stiffness of inner spring can be calculatedin order to avoid pulling trigger 610 so that trigger 610 is resting at,or otherwise making contact with, an inner rotational hard stop, or aninner portion of a housing of the controller.

FIG. 7 illustrates a controller that includes an extended frame 700 thatcreates a closed extended travel range 730 for a trigger 710 to movewithin when trigger 710 is in a maximum closed position outside ofclosed extended travel range 730, according to an embodiment of theinvention. In the illustrated embodiment, extended frame 700 is anexample of a haptic diminishment prevention component, and is anextension of an outer portion of a housing of the controller. Aspreviously described, in a standard trigger design, a trigger hapticeffect can be greatly diminished when a trigger (such as trigger 710) isa maximum closed position (e.g., when a user fully presses the triggerso that the trigger is grounded to an inner portion of a housing). Inorder to increase a magnitude of a trigger haptic effect when thetrigger is in a maximum closed position outside of a closed extendedtravel range, an extended frame (such as extended frame 700) can be usedas grounding for an object (such as object 720) that moves the trigger.In this situation, even when the trigger has fully moved to a maximumclosed position outside of the closed extended travel range, the triggercan still move against the object and a significant haptic feedbacksensation can be generated at the trigger.

FIG. 7 includes views 701 and 702. View 701 is a view of the controllerwhere object 720 (e.g., a user's finger) has pushed, pulled, orotherwise moved trigger 710, and where object 720 is grounded (i.e.,bottomed out) on extended frame 700. Because object 720 is grounded onextended frame 700, trigger 710 is not resting at, or otherwise makingcontact with, an inner rotational hard stop, or an inner portion of ahousing of the controller, when trigger 710 is in a maximum closedposition outside of closed extended travel range 730. In other words,extended frame 700 creates closed extended travel range 730, whereclosed extended travel range 730 is a range that trigger 710 can rotate,or otherwise move, within, in response to a force that is produced by atargeted motor or actuator and applied to trigger 710. By creatingclosed extended travel range 730, extended frame 700 can prevent trigger710 from grounding on the inner rotational hard stop, or the innerportion of the housing, when trigger 710 rotates, or otherwise moves, inresponse to the force that is applied to trigger 710. This can increasea magnitude of a trigger haptic effect (e.g., kinesthetic haptic effect)experienced at trigger 710.

View 702 is a view of the controller where a targeted motor or actuatorapplies a force to trigger 710, and trigger 710 rotates, or otherwisemoves, in response to the force. As illustrated in view 702 of FIG. 7,trigger 710 rotates, or otherwise moves, into closed extended travelrange 730, and occupies at least a portion of closed extended travelrange 730.

In an alternate embodiment, extended frame 700 can be replaced with aninner spring. The inner spring can be positioned between trigger 710 andan inner rotational hard stop, or an inner portion of a housing of thecontroller. Further, the inner spring can push trigger 710 where object720 has pushed, pulled, or otherwise moved trigger 710 such that trigger710 is not resting at, or otherwise making contact with, an innerrotational hard stop, or an inner portion of a housing of the controller(i.e., such that closed extended travel range 730 is created). In thisalternate embodiment, a stiffness of inner spring can be calculated inorder to provide sufficient resistance to prevent trigger 710 fromresting at, or otherwise making contact with, an inner rotational hardstop, or an inner portion of a housing of the controller.

FIG. 8 illustrates a flow diagram of the functionality of a haptictrigger modification module (such as haptic trigger modification module16 of FIG. 1), according to an embodiment of the invention. In oneembodiment, the functionality of FIG. 8 is implemented by softwarestored in memory or other computer-readable or tangible media, andexecuted by a processor. In other embodiments, the functionality may beperformed by hardware (e.g., through the use of an application specificintegrated circuit (“ASIC”), a programmable gate array (“PGA”), a fieldprogrammable gate array (“FPGA”), etc.), or any combination of hardwareand software. In certain embodiments, some of the functionality can beomitted.

The flow begins and proceeds to 810. At 810, a position of a user inputelement of a peripheral device is received. The peripheral device can bea controller or a gamepad. The peripheral device can further include ahousing, a user input element, a position sensor coupled to the userinput element, a haptic output device located within the housing andcoupled to the user input element, and a haptic diminishment preventioncomponent. The haptic output device can be an actuator. In an embodimentwhere the haptic output device is an actuator, the actuator can be amotor configured to exert a bi-directional push/pull force. The hapticdiminishment prevention component can be a spring. In an embodimentwhere the haptic diminishment prevention component is a spring, thespring can be a cantilever spring. In an alternate embodiment where thehaptic diminishment prevention component is a spring, the spring can bea compression spring. In an alternate embodiment, the hapticdiminishment prevention component can be a frame. In an embodiment wherethe haptic diminishment prevention component is a frame, the frame canbe an extended frame that is an extension of an outer portion of thehousing. In one embodiment, a user input element can be a trigger. Theflow then proceeds to 820.

At 820, a haptic effect definition is sent to the haptic output deviceof the peripheral device in response to the received position of theuser input element. The haptic effect definition can include haptic datato produce a haptic effect at a user input element of the peripheraldevice. In one embodiment, the haptic effect definition can be a triggerhaptic effect definition that can include haptic data to produce atrigger haptic effect at a trigger of the peripheral device. In oneembodiment, a processor causes the haptic effect definition to be sentto the haptic output device. Further, in one embodiment, the hapticeffect definition is generated by the processor in response to theposition of the user input element of the peripheral device. In oneembodiment, the processor is located within the housing of theperipheral device. In an alternate embodiment, the processor is remotelylocated from the housing of the peripheral device. The flow thenproceeds to 830.

At 830, a force is output to the user input element of the peripheraldevice in response to the haptic effect definition. In one embodiment,the haptic output device of the peripheral device can output the force,and the processor can cause the haptic output device to output theforce. Further, in one embodiment, the force is transmitted from thehaptic output device to the user input element as a kinesthetic hapticeffect. The flow then proceeds to 840.

At 840, a range is created that the user input element can move withinin response to the output force when the user input element is in atleast one of: a maximum open position outside of the range; or a maximumclosed position outside of the range. In one embodiment, the hapticdiminishment prevention component of the peripheral device can createthe range. In one embodiment, the maximum open position of the userinput element can be a position of the user input element such that theuser input element has not moved into the housing, and the maximumclosed position of the user input element can be a position of the userinput element such that the user input element has moved a maximumdistance into the housing. In one embodiment, the haptic diminishmentprevention component is a spring when the user input element is in themaximum open position outside of the range. In this embodiment, thespring can maintain the user input element in a position such that thereis an open extended travel range between the user input element and anouter portion of the housing. This open extended travel range can be therange that the user input element can move within in response to theoutput force. In another embodiment, the haptic diminishment preventioncomponent is a frame when the user input element is in the maximumclosed position outside of the range. In this embodiment, an object canground on the frame when the object moves the user input element intothe maximum closed position outside of the range, and the position ofthe user input element is such that there is a closed extended travelrange between the user input element and an inner portion of thehousing. This closed extended travel range can be the range that theuser input element can move within in response to the output force. Inanother embodiment, the haptic diminishment prevention component is aspring when the user input element is in the maximum closed positionoutside of the range. In this embodiment, the spring can maintain theuser input element in a position such that there is a closed extendedtravel range between the user input element and an inner portion of thehousing when an object moves the user input element into the maximumclosed position outside of the range. The flow then ends.

FIG. 9 illustrates a maximum open position that is outside an openextended travel range for a trigger, and a maximum closed position thatis outside a closed extended travel range for the trigger, according toan embodiment of the invention. As previously described, a peripheraldevice, such as a controller or a gamepad, can include a trigger (orsome other use input element), a housing, and one or more hapticdiminishment prevention components. The trigger can have a travel range905. A first haptic diminishment prevention component can create an openextended travel range 915. Thus, when little or no force is applied tothe trigger, such that the trigger has not begun to rotate, or otherwisemove, into the housing, the first haptic diminishment preventioncomponent can place the trigger in a maximum open position that isoutside of open extended travel range 915 (i.e., maximum open positionoutside open extended travel range 910 or position 910). When a forcethat is generated by an actuator is applied to the trigger, the forcecan move the trigger from position 910 to a position between position910 and a maximum open position 920, or to maximum open position 920.Similarly, a second haptic diminishment prevention component can createa closed extended travel range 925. Thus, when a force is applied to thetrigger, such that the trigger has rotated, or otherwise moved, amaximum distance into the housing, the second haptic diminishmentprevention component can place the trigger in a maximum closed positionthat is outside of closed extended travel range 925 (i.e., maximumclosed position outside closed extended travel range 930 or position930). When a secondary force that is generated by an actuator and isapplied to the trigger, the secondary force can move the trigger fromposition 930 to a position between position 930 and a maximum closedposition 940, or to maximum closed position 940.

Thus, in one embodiment, a peripheral device can include one or morehaptic diminishment prevention components, such as springs or frames,where a haptic diminishment prevention component is configured toincrease a magnitude of a trigger haptic effect experienced at a triggerwhen the trigger is either in a maximum open position outside of therange or a maximum closed position outside of the range. Increasing amagnitude of haptic feedback sensations for these key locations canallow for richer trigger haptic effects that consume less power. Byproviding richer trigger haptic effects, a more realistic and immersivegaming experience can be provided.

The features, structures, or characteristics of the invention describedthroughout this specification may be combined in any suitable manner inone or more embodiments. For example, the usage of “one embodiment,”“some embodiments,” “certain embodiment,” “certain embodiments,” orother similar language, throughout this specification refers to the factthat a particular feature, structure, or characteristic described inconnection with the embodiment may be included in at least oneembodiment of the present invention. Thus, appearances of the phrases“one embodiment,” “some embodiments,” “a certain embodiment,” “certainembodiments,” or other similar language, throughout this specificationdo not necessarily all refer to the same group of embodiments, and thedescribed features, structures, or characteristics may be combined inany suitable manner in one or more embodiments.

One having ordinary skill in the art will readily understand that theinvention as discussed above may be practiced with steps in a differentorder, and/or with elements in configurations which are different thanthose which are disclosed. Therefore, although the invention has beendescribed based upon these preferred embodiments, it would be apparentto those of skill in the art that certain modifications, variations, andalternative constructions would be apparent, while remaining within thespirit and scope of the invention. In order to determine the metes andbounds of the invention, therefore, reference should be made to theappended claims.

We claim:
 1. A peripheral device, comprising: a housing; a user inputelement, wherein the user input element is positioned within the housingso that a first contact with the housing defines a first maximum rangeof a first movement of the user input element; a position sensor coupledto the user input element, wherein the position sensor is configured todetect a position of the user input element within the first maximumrange, and wherein the position sensor is further configured to send theposition to a processor; a haptic output device located within thehousing and coupled to the user input element, wherein the haptic outputdevice is configured to receive a haptic effect definition from theprocessor, and is further configured to output a force to the user inputelement in response to the haptic effect definition; and a hapticdiminishment prevention component that defines a first diminishmentrange of the first movement of the user input element, wherein the firstdiminishment range is less than the first maximum range and prevents thefirst contact with the housing; wherein the haptic diminishmentprevention component is configured to modify a magnitude of the force tothe user input element depending on the position of the user inputelement as detected by the position sensor.
 2. The peripheral device ofclaim 1, wherein the haptic diminishment prevention component comprisesa spring; and wherein the spring maintains the user input element in aposition such that there is an open extended travel range between theuser input element and the housing.
 3. The peripheral device of claim 2,wherein the spring comprises at least one of: a compression spring or acantilever spring.
 4. The peripheral device of claim 1, wherein the userinput element is positioned within the housing so that a second contactwith the housing defines a second maximum range of a second movement ofthe user input element; wherein the haptic diminishment preventioncomponent defines a second diminishment range of the second movement ofthe user input element, wherein the second diminishment range is lessthan the second maximum range and prevents the second contact with thehousing.
 5. The peripheral device of claim 1, wherein the force istransmitted from the haptic output device to the user input element as akinesthetic haptic effect.
 6. The peripheral device of claim 1, whereinthe haptic output device comprises an actuator.
 7. The peripheral deviceof claim 6, wherein the actuator comprises a motor configured to exert abi-directional push/pull force.
 8. The peripheral device of claim 1,wherein the haptic effect definition is generated by the processor inresponse to the position of the user input element.
 9. The peripheraldevice of claim 1, wherein the user input element is a trigger, and thefirst movement of the user input element is moving the trigger a maximumdistance into the housing in a closed position.
 10. The peripheraldevice of claim 4, wherein the user input element is a trigger, and thesecond movement of the user input element is a maximum distance outsideof the housing in an open position.
 11. The peripheral device of claim1, wherein the user input element comprises one of: a button, a bumper,an analog stick, a digital stick, a driving wheel, or a rotatabletrigger.
 12. The peripheral device of claim 1, wherein the hapticdiminishment prevention component is further configured to prevent theuser input element from grounding when the user input element ispositioned at each of the first maximum range and a second maximumrange.
 13. A non-transitory computer-readable medium having instructionsstored thereon that, when executed by a processor, cause the processorto modify a haptic effect experienced at a user input element, themodifying comprising: receiving, from a position sensor, a position ofthe user input element within a first maximum range of a peripheraldevice, the peripheral device comprising a housing, the user inputelement, a haptic output device located within the housing and coupledto the user input element, and a haptic diminishment preventioncomponent; sending a haptic effect definition to the haptic outputdevice in response to the position of the user input element; andcausing the haptic output device to output a force to the user inputelement of the peripheral device in response to the haptic effectdefinition; wherein the user input element is positioned within thehousing so that a first contact with the housing defines the firstmaximum range of a first movement of the user input element; wherein thehaptic diminishment prevention component defines a first diminishmentrange of the first movement of the user input element, wherein the firstdiminishment range is less than the first maximum range and prevents thefirst contact with the housing, and wherein the haptic diminishmentprevention component is configured to modify a magnitude of the force tothe user input element depending on the position of the user inputelement as detected by the position sensor.
 14. The non-transitorycomputer-readable medium of claim 13, wherein the haptic diminishmentprevention component comprises a spring; and wherein the springmaintains the user input element in a position such that there is theopen extended travel range between the user input element and thehousing.
 15. The non-transitory computer-readable medium of claim 13,wherein the spring comprises at least one of: a compression spring or acantilever spring.
 16. The non-transitory computer-readable medium ofclaim 13, wherein the user input element is positioned within thehousing so that a second contact with the housing defines a secondmaximum range of a second movement of the user input element; whereinthe haptic diminishment prevention component defines a seconddiminishment range of the second movement of the user input element,wherein the second diminishment range is less than the second maximumrange and prevents the second contact with the housing.
 17. Thenon-transitory computer-readable medium of claim 13, wherein the userinput element is a trigger, and the first movement of the user inputelement is moving the trigger a maximum distance into the housing in aclosed position.
 18. The non-transitory computer-readable medium ofclaim 16, wherein the user input element is a trigger, and the secondmovement of the user input element is a maximum distance outside of thehousing in an open position.
 19. A computer-implemented method formodifying a haptic effect experienced at a user input element, thecomputer-implemented method comprising: receiving, from a positionsensor, a position of the user input element within a first maximumrange of a peripheral device, the peripheral device comprising ahousing, the user input element, a haptic output device located withinthe housing and coupled to the user input element, and a hapticdiminishment prevention component; sending a haptic effect definition tothe haptic output device in response to the position of the user inputelement; and causing the haptic output device to output a force to theuser input element of the peripheral device in response to the hapticeffect definition; wherein the user input element is positioned withinthe housing so that a first contact with the housing defines the firstmaximum range of a first movement of the user input element; wherein thehaptic diminishment prevention component defines a first diminishmentrange of the first movement of the user input element, wherein the firstdiminishment range is less than the first maximum range and prevents thefirst contact with the housing, and wherein the haptic diminishmentprevention component is configured to modify a magnitude of the force tothe user input element depending on the position of the user inputelement as detected by the position sensor.
 20. The computer-implementedmethod of claim 19, wherein the user input element is a trigger, and thefirst movement of the user input element is moving the trigger a maximumdistance into the housing in a closed position.
 21. Thecomputer-implemented method of claim 19, wherein the user input elementis a trigger, and the first movement of the user input element is amaximum distance outside of the housing in an open position.
 22. Thecomputer-implemented method of claim 19, wherein the haptic diminishmentprevention component comprises a spring; and wherein the springmaintains the user input element in a position such that there is an theopen extended travel range between the user input element and thehousing.